<?php
namespace app\invoice\controller;
use app\common\base\curl;
use qrc\Aes;
use think\Controller;
use app\invoice\controller\DESDZFP;
use app\common\base\_Db;
use app\common\controller\CommonController;
use app\common\controller\ResponseJson;
use think\Exception;
use think\Request;
use app\common\entity\RequestEntity;
use think\Db;
use think\Session;

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/10/25
 * Time: 16:38
 */
class Invoice extends Controller {
    public function Test(){
        $SendUrl = "http://192.168.1.16:8080/invoice/scan";
        $order = array(
            'operater'=>'queryInfoByOrderId',
            'orderno' =>'123456'
        );
        $Des = new DESDZFP();
        $aa = $Des->encrypt($order);
        dump($aa);
        $res = curl::http_curl($SendUrl,$aa);
        dump($res);
        $dres = $Des->decrypt($res);
        dump($dres);
    }
    public function Index(){
        $orderno = new RequestEntity('orderno', '订单号', false, 32);
//        $orderInfo = $this->GetOrderInfo($orderno->text);
        $SendUrl="https://nnfpdev.jss.com.cn/shop/buyer/allow/cxfKp/cxfServerKpOrderSync.action";
        $order=[
                "identity"=> "93363DCC6064869708F1F3C72A0CE72A713A9D425CD50CDE",
	            "order"=> [
                "orderno"=> "No.12016101300002",
                "saletaxnum"=> "339901999999142",
                "saleaddress"=> "&*杭州市中河中路 222 号平海国际商务大厦 5 楼",
                "salephone"=> "0571-87022168",
                "saleaccount"=> "东亚银行杭州分行 131001088303400",
                "clerk"=> "袁牧庆 ",
                "payee"=> "络克",
                "checker"=> "朱燕",
                "invoicedate"=> "2016-06-15 01:51:41",
                "kptype"=> "1",
                "address"=> "",
                "phone"=> "13185029520",
                "taxnum"=> "110101TRDX8RQU1",
                "buyername"=> " 个 人",
                "account"=> "",
                "fpdm"=> "",
                "fphm"=> "",
                "message"=> "开票机号为02 请前往诺诺网(www.jss.com.cn) 查询发票详情",
                "qdbz"=> "1",
                "qdxmmc"=> "1111 ",
                "detail"=> [[
                            "goodsname"=> "1",
                            "spec"=> "1",
                            "unit"=> "1",
                            "hsbz"=> "1",
                            "num"=> "1",
                            "price"=> "19.99",
                            "spbm"=> "1090511030000000000",
                            "fphxz"=> "0",
                            "yhzcbs"=> "0",
                            "zzstsgl"=> "222222",
                            "lslbs "=> "",
                            "taxrate"=> "0.17"
                        ],
                        [
                            "goodsname "=> "2 ",
                            "spec "=> "2 ",
                            "unit"=> "2",
                            "hsbz"=> "1",
                            "num"=> "1",
                            "price"=> "20",
                            "spbm"=> "1090511030000000000",
                            "fphxz"=> "0",
                            "yhzcbs"=> "0",
                            "zzstsgl"=> "222222",
                            "lslbs "=> "",
                            "taxrate"=> "0.17"
                        ],
                ],
            ],
        ];
        //$aes = new Aes('1234567812345678');
        //加密
        //$encrypted = $aes->encrypt($order);
        $order = json_encode($order);
        var_dump($order);
        $DES = new DESDZFP();

        $res = $DES->encrypt($order);
        var_dump($res);exit;
        $res = curl::PostUrl($SendUrl,$order);
        dump($res);
        /*$order=DESDZFP.encrypt(order);
        $HttpClient httpclient=null;
        $PostMethod post=null;
        try{
            httpclient = new HttpClient();
            post = new PostMethod(SendUrl);
        //设置编码方式
            post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"UTF-8");
        //添加参数
            post.addParameter("order",order);
        //执行
            httpclient.executeMethod(post);
        //接口返回信息
            String info = new String(post.getResponseBody(),"UTF-8");
        System.out.println(info);
        }catch (Exception e) {
                    e.printStackTrace();
                }finally {
        //关闭连接，释放资源
                    post.releaseConnection();
                    ((SimpleHttpConnectionManager)httpclient.getHttpConnectionManager()).shutdown();
        }*/
    }

    /**
     * 获取订单信息
     * @param $orderid
     * @return mixed
     */
    public function GetOrderInfo($orderid){
        $res = Db::name('order_info')
            ->field([
                'pay_time',
                'pay_money',
            ])
            ->where('order_id ='.$orderid)
            ->find();
        return $res;
    }
    /*
     * 发票
     */
    public function Invoice(){
        $info = array(
            'identity'=>'',//身份认证，在诺诺网备案后，由诺诺网提供，每个企业一个
            'order'=>'',//请求体
            'buyername'=>'浙江爱信诺',//购方名称 浙江爱信诺
            'taxnum'=>'339901999999103',//可为空 购方税号企业要填，个人可为空
            'phone'=>'15858585858',//购方手机(开票成功会短信提醒购方)
            'address'=>'浙江省杭州市万塘路',//购方地址 企业要填，个人可为空
            'account'=>'银行账号  ',//企业要填，个人 购方银行账号可为空
            'orderno'=>'20170104120207971529',//订单号  每个企业唯一
            'invoicedate'=>'2016-01-13 12:30:00',//单据时间
            'clerk'=>'张三',//开票员
            'saleaccount'=>'120200590990432278',//销方银行账号
            'salephone'=>'0571-81029365',//销方电话
            'saleaddress'=>'杭州市西湖区万塘路 30号高新东方科技园',//销方地址
            'saletaxnum'=>'330100555190356',//销方税号
            'kptype'=>'1',//开票类型:1,正票;2,红票
            'message'=>'备注信息  ',//130冲红时，必须在备注中注明“对应正数发票代码:XXXXXXXXX号码:YYYYYYYY”文案，其中“X”为发票代码，“Y”为发票号码，否则接口会自动添加该文案
            'payee'=>'李四',//收款人 8
            'checker'=>'王五',//复核人8
            'fpdm'=>'125999915630',//12对应蓝票发票代码  红票必填，不满12 位请左补 0
            'fphm'=>'00130865',//8对应蓝票发票号码 红票必填，不满8 位请左补 0
            'tsfs'=>'1',//2推 送 方 式 :-1, 不 推送;0,邮箱;1,手机(默认);2,邮箱、手机
            'email'=>'test@xx.com ',//50推送邮箱（tsfs 为 0或 2 时，此项为必填）
            'qdbz'=>'0',//1清单标志:0,根据项目名称数，自动产生清单;1,将项目信息打印至清单
            'qdxmmc'=>'详见销货清单',//90清单项目名称:打印清单时对应发票票面项目名称，注意：税总要求清单项目名称为（详见销货清单)qdbz 为 1 是，此项为必填
            'telephone'=>'0571-88888888',//20购方电话
            'dkbz'=>'0',//1代开标志:0 非代开;1代开。代开蓝票备注文案要求包含：代开企业税号:***,代开企业名称:***；代开红票备注文案要求：对应正数发票代码:***号码:***代开企业税号 :*** 代 开 企 业 名称:***。
            'deptid'=>'9F7E9439CA8B4C60A2FFF3EA3290B088',//32部门门店 id（诺诺系统中的 id）
            'clerkid'=>'3F7EA439CA8B4C60A2FFF3EA3290B084',//32开票员 id（诺诺系统中的 id）
            'invoiceLine'=>'1',//发票种类，p 电子增值税普通发票，c 增值税普通发票(纸票)，s增值税专用发票，e收购发票(电子)，f 收购发票(纸质)
            'cpybz'=>'0',//成品油标志：0 非成品油，1 成品油，
            'detail'=>array(   //电子发票明细
                'goodsname'=>'',//90商品名称
                'num'=>'',//16数量；数量、单价必须都不填，或者都必填，不可只填一个；当数量、单价都不填时，不含税金额、税额、含税金额都必填
                'price'=>'',//16单价；数量、单价必须都不填，或者都必填，不可只填一个；当数量、单价都不填时，不含税金额、税额、含税金额都必填
                'hsbz'=>'',//单价含税标志，0:不含税,1:含税
                'taxrate'=>'',//10税率
                'spec'=>'',//40规格型号
                'unit'=>'',//unit单位
                'spbm'=>'',//19商品编码
                'zsbm'=>'',//20自行编码
                'fphxz'=>'',//1发票行性质:0,正常行;1,折扣行;2,被折扣行
                'yhzcbs'=>'',//1优惠政策标识:0,不使用;1,使用
                'zzstsgl'=>'',//50增值税特殊管理，如：即征即退、免税、简易征收 等
                'lslbs'=>'',//1零税率标识:空,非零税率;1,免税;2,不征税;3,普通零税率
                'kce'=>'',//16.2扣除额，小数点后两位。差额征收的发票目前只支持一行明细。不含税差额 = 不含税金额 - 扣除额；税额 = 不含税差额* 税率。
                'taxfreeamt'=>'',//16.2不含税金额
                'tax'=>'',//16.2税额
                'taxamt'=>'',//16.含税金额
            )
        );
    }
}